#ifndef COMB_CONSENSUS_HPP__
#define COMB_CONSENSUS_HPP__

#include "util.hpp"
#include "perm_parser.hpp"
#include "snp_cand.hpp"
#include "serialization.hpp"

#include <iostream>

/** Modify a genome replacing bases with the SNPs that have been called in color space.
 * \param options Options for comb.
 * \param snp_calls The SNPs to be used to modify the genome.
 * \param genome_seqs The genomes to be modified.
 */
void change_col_genome(prog_options &options, color_call_vector_t &snp_calls, std::map<std::string, std::string> &genome_seqs);

/** Modify a genome replacing bases with the SNPs that have been called in color space.
 * \param options Options for comb.
 * \param snp_calls The SNPs to be used to modify the genome.
 * \param genome_seqs The genomes to be modified.
 */
void change_seq_genome(seq_call_vector_t &snp_calls, std::map<std::string, std::string> &genome_seqs);

/** Driver for "comb consensus"
 */
void do_consensus(int argc, char **argv);

#endif
